package com.liang.kborcl.aop;

import org.apache.shardingsphere.shardingjdbc.jdbc.annotation.Mandatory;
import org.springframework.aop.MethodMatcher;

import java.lang.reflect.Method;

public class MyMethodMatcher implements MethodMatcher {

    @Override
    //用得最多的是这个方法，另外两个方法不知干啥用的，暂时就都返回false
    //判断该方法上有@MyAnnotation
    public boolean matches(Method method, Class<?> aClass) {

        //注意自定义注解必须使用内置注解@Retention(RetentionPolicy.RUNTIME)
        //不然获取不了
        Mandatory mAnno = method.getAnnotation(Mandatory.class);
        Mandatory cAnno = aClass.getAnnotation(Mandatory.class);
        //判断方法是否使用了MyAnnotation注解。
        return mAnno != null || cAnno != null;
    }

    @Override
    public boolean isRuntime() {
        return false;
    }

    @Override
    public boolean matches(Method method, Class<?> aClass, Object... objects) {
        return false;
    }
}
